package com.itheima.d10_interface_jdk8;

/**
 * 接口本质上就是抽象到极致的抽象类，而且弥补了不能多继承的问题（可实现多接口）
 *
 * JDK8开始，接口中为啥要新增这些方法?
 * 增强了接口的能力，更便于项目的扩展和维护。
 *
 * 1、JDK8开始，接口中新增了哪些方法?
 * 默认方法：使用default修饰，使用实现类的对象调用。
 * 静态方法：static修饰，必须用当前接口名调用
 * 私有方法：private修饰，jdk9开始才有的，只能在接口内部被调用。
 * 他们都会默认被public修饰。
 * 2、JDK8开始，接口中为啥要新增这些方法?
 * 增强了接口的能力，更便于项目的扩展和维护。
 */
public interface A {
    /**
     * 1、默认方法：必须使用default修饰，默认会被public修饰
     * 可以带方法体
     * 默认方法就是实例方法：对象的方法，必须使用实现类的对象来访问。
     */
    public default void test1(){
        System.out.println("===默认方法==");

        //私有方法：private修饰，jdk9开始才有的，只能在接口内部被调用。
        test2();
    }

    /**
     * 2、私有方法：必须使用private修饰。(JDK 9开始才支持的)
     * 可以带方法体
     *   实例方法：对象的方法。
     */
    private void test2(){
        System.out.println("===私有方法==");
    }

    /**
     * 3、静态方法：必须使用static修饰，默认会被public修饰
     * 静态方法：static修饰，必须用当前接口名调用
     */
     static void test3(){
        System.out.println("==静态方法==");
     }

     void test4();
     void test5();
     default void test6(){

     }
}
